﻿Public Class IsyeriFaaliyetVergiDairesi
    Inherits ProcessReport

    Dim VerilenSure As String
    Dim Row As DataRow
    Dim SecilenKayit As VergiDairesiYazisiStruct
    Dim BolgeKod As String
    Dim BolgeAmirligi As String
    Dim UniqueSiraNo As Int32
    Dim Printed_Already As Boolean = False
    Dim TekrarRaporu As Boolean = False
    Dim RS3 As Recordset

    Structure VergiDairesiYazisiStruct
        Dim SicilNo As String
        Dim isyeriNo As String
        Dim FirmAd As String
        Dim İsverenAdi As String
        Dim İsverenSoyadi As String
        Dim İsverenkimlik As String
        Dim İsverenSno As String
        Dim SeriNo As String
        Dim VerilisTarihi As Date
    End Structure

    Public Overrides Sub GenericEvent(ByVal e As ProcessEventArgs)
        Select Case e.EventType
            Case EventType.Initialize
                Start("Vergi Dairesi İşyeri Kaydı Talep Formu", "Bilgileri girin.")
               
                AddSigortali()

                'AddIsyeri()
                AddCombo("isyeri", "İşyeri", "", "width=30;nl", "", "")

                AddCombo("TitleAmirAdina", "İmz. Amir", "A,Amir Kendisi|Ad,Amir Adına", "width=13", GetSetting("SSD", "IsverenServ", "TitleAmirAdina", "A"))
                AddText("AmirVeyaAdinaImzalayan", "Amir(a) Adı", "width=20;nl", TitleCase((GetSetting("SSD", "IsverenServ", "AmirVeyaAdinaImzalayan", ""))), "Lütfen Amir Adını veya Amir adına imza atacak İsmi Belirtiniz!")
                AddCombo("TitleAmirYardAdina", "İmz. Amir Yd.", "A,Amir Yardımcısı|AYardA,Amir Yard. Adına", "width=13", GetSetting("SSD", "IsverenServ", "TitleAmirYardAdina", "A"))
                AddText("AmirYardVeyaAdinaImzalayan", "Amir Yd. Adı", "width=20;nl", TitleCase(GetSetting("SSD", "IsverenServ", "AmirYardVeyaAdinaImzalayan", "")), "Lütfen Amir Yard. Adını veya Amir adına imza atacak İsmi Belirtiniz!")

                '  AddText("Sayino", "Sayı No.", "width=10;nl", "")

                'AddText("IsyeriAdi", "İşyeri Adı", "width=30;nl", "")
            Case EventType.Shown
                Printed_Already = False

            Case EventType.Other

            Case EventType.ValidateInput

                If e.Name = "Sigortali" Then

                    Dim Sno As String = Input("sigortali")
                    Dim RSS As Recordset = Sigortali.AktifOlduguIsler(Local, Sno)
                    If RSS.Rows.Count = 0 Then
                        MsgBox("Sigortalının şu anda aktif olarak çalıştığı bir işyeri yok !", MsgBoxStyle.Critical)
                        Buttons.Show("Reset")
                        Focus("Sigortali")
                        Exit Select
                    End If

                    Dim Rs2 As Recordset = RSS.Select(" statu='01.11.003' or statu='01.01.003' or statu='01.11.004' or statu='01.01.004'")
                    If Rs2.Rows.Count = 0 Then
                        MsgBox("Sigortalının şu anda İşveren olarak aktif olarak çalıştığı bir işyeri yok !", MsgBoxStyle.Critical)
                        Buttons.Show("Reset")
                        Focus("Sigortali")
                        Exit Select
                    End If
                    Dim Rs3 As Recordset = Rs2.GroupBy("isyerino,isyeriadi")

                    'Dim Dt As DataColumn = New DataColumn("isyeriAdi", System.Type.GetType("String"))
                    'Rs3.Columns.Add(Dt)
                    For i = 0 To Rs3.Rows.Count - 1
                        Rs3.Rows(i).Item(1) = Rs3.Rows(i).Item(0).ToString.Trim & " - " & Rs3.Rows(i).Item(1).ToString.Trim
                    Next
                    Source("isyeri") = Rs3

                End If

            Case EventType.ValidateForm

                If Not IsEmpty("Isyeri") Then

                    '  Enabled(Input("Sayino")) = False

                    Dim TmpRS As Recordset = Sigortali.SnoAra(Local, Input("sigortali"))
                    Dim ArrIsyeri() As String = Input("isyeri").ToString.Split("-")

                    Dim RSisyeri As Recordset = Isyeri.IsyeriNoAra(Local, ArrIsyeri(0))

                    If RSisyeri.Rows.Count = 0 Then
                        MsgBox("Seçilen işyeri bu şubeye ait değil !", MsgBoxStyle.Critical)
                        Buttons.Show("Reset")
                        Focus("Sigortali")
                        Exit Select
                    End If

                    Dim RS As Recordset = Sigortali.Yazismalar.IsverenDaireYazismalari.VergiDYazismaOku(Remote, Input("isyeri"), Input("sigortali"))

                    Dim SeriNo As Int16 = Sigortali.Yazismalar.IsverenDaireYazismalari.VergiDairesiSiraNo(Remote, User.Department.ID)


                    SaveSetting("SSD", "IsverenServ", "TitleAmirAdina", Input("TitleAmirAdina"))
                    SaveSetting("SSD", "IsverenServ", "AmirVeyaAdinaImzalayan", TitleCase(Input("AmirVeyaAdinaImzalayan")))
                    SaveSetting("SSD", "IsverenServ", "TitleAmirYardAdina", Input("TitleAmirYardAdina"))
                    SaveSetting("SSD", "IsverenServ", "AmirYardVeyaAdinaImzalayan", TitleCase(Input("AmirYardVeyaAdinaImzalayan")))

                    Buttons.Show("Print.Reset")

                    ' If KayitVarMi_Kontrol() Then


                    'Help = "Yazdır butonu ile dökümanı yeniden yazdırabilirsiniz."

                    'Buttons.Show("Print.Reset")
                    'TekrarRaporu = True

                    '                Else
                    TekrarRaporu = False
                    SecilenKayit.VerilisTarihi = DMY(Now)
                    SecilenKayit.FirmAd = RSisyeri("isyeriadi")
                    SecilenKayit.SicilNo = RSisyeri("sicilno")
                    SecilenKayit.İsverenkimlik = TmpRS("kimlik")
                    SecilenKayit.İsverenSno = TmpRS("sno")
                    SecilenKayit.isyeriNo = RSisyeri("isyerino")
                    SecilenKayit.İsverenAdi = TmpRS("adi")
                    SecilenKayit.İsverenSoyadi = TmpRS("soyadi")
                    SecilenKayit.SeriNo = SeriNo

                    Enabled("Isyeri") = True
                    Enabled("Sigortali") = True

                    Buttons.Show("Print.Reset")
                    EnterDataStage()
                    ' End If

                    ' --------------------------------------
                    '   VerilenBelge_KayitHazirla(TekrarRaporu)
                    ' --------------------------------------

                Else
                    Buttons.Show("Print.Reset")
                    Help = "İşyeri ve İşveren bilgilerini girdikten sonra, Yazdır butonu ile raporu yazdırabilirsiniz."
                    EnterDataStage()
                End If
                e.Result = True

            Case EventType.CoverPage

                    Dim SeriNo As String = SecilenKayit.SeriNo

                    Report.PrintDocHeader(UCase(Department.Name))
                    Report.SkipLine()
                    Report.SetColumns("", "1;1", "l;r")

                    If Department.ID = "4" Then ' İSKELE
                        Report.Print("Sayı: SSD-500-III-İL-İD-34-" & Now.Year, "Tarih:" & SecilenKayit.VerilisTarihi)
                    Else
                        Report.Print("Sayı: SSD-I.00-III-" & SecilenKayit.SeriNo & "/" & Now.Year, "Tarih:" & SecilenKayit.VerilisTarihi)
                    End If

                    Report.SkipLine()
                    ' Report.CenteredLine()
                    Report.FontSize = "+"

                    Report.Print("Gelir ve Vergi Dairesi")
                    Report.Print(Department.Name & " Şubesi")
                    Report.Print(Department.Name)

                    Report.SkipLine()
                    Report.SkipLine()
                    Report.Print(" Konu :" & SecilenKayit.FirmAd.ToString.Trim & " vergi kaydı hk.")
                    Report.SkipLine()

                    'Report.PrintParagraph("İşverenin adı soyadı: " & SecilenKayit.FirmAd, True)
                    'Report.PrintParagraph("İşyerinin sicil no: " & SecilenKayit.isyeriNo, True)
                    ''Report.FontSize = ""
                    ' Report.FontSize = "-"
                    Report.CenteredLine()

                    Report.PrintParagraph(Input("isyeri") & " numaralı " & SecilenKayit.FirmAd.Trim & " Ltd.'in " & SecilenKayit.İsverenkimlik & " kimlik numaralı " & SecilenKayit.İsverenAdi & " " & SecilenKayit.İsverenSoyadi & " , Bölge Amirliğimize vermiş olduğu işyeri " & _
                                           "tescil / devir / kapatma işlemleri için vergi yükümlüsü olduğu tarihler ve faaliyet konusunda kayıtlı olduğunun tarafımıza yazılı olarak bildirilmesi hususunu saygılarımızla rica ederiz.")

                    Report.SkipLine(3)
                    Report.SetColumns("", "2;1;2", "c;c;c")

                    Dim BolgeBuro As String = ""
                    Report.FontSize = "+"

                    If Department.ID = "2" Or Department.ID = "3" Or Department.ID = "5" Then
                        BolgeBuro = " Bölge "
                    ElseIf Department.ID = "4" Or Department.ID = "6" Then
                        BolgeBuro = " Büro "
                    End If

                    If Department.ID = "1" Or Department.ID = "2" Or Department.ID = "0" Then ' Lefkoşa,Girne,Merkez şubesi
                        Dim ImzalayanAmirUnvan As String = Department.ManagerTitle(0) & "" & If(Input("TitleAmirAdina") = "A", "", "(a)")
                        Dim ImzalayanAmirYardUnvan As String = Department.ManagerTitle(1) & "" & If(Input("TitleAmirYardAdina") = "A", "", "(a)")

                        Dim ImzalayanAmirAdi As String = If(Input("TitleAmirAdina") = "A", Department.Manager(0), Input("AmirVeyaAdinaImzalayan"))
                        Dim ImzalayanAmirYardAdi As String = If(Input("TitleAmirYardAdina") = "A", Department.Manager(1), Input("AmirYardVeyaAdinaImzalayan"))

                        Report.SkipLine(2)
                        Report.Print("...........................................", "", "...........................................")
                        Report.SkipLine(1)
                        Report.Print(TitleCase(ImzalayanAmirYardAdi), "", TitleCase(ImzalayanAmirAdi)) 'Department.AsstManagerName ---  Department.ManagerName)
                        Report.SkipLine(1)
                        Report.Print(ImzalayanAmirYardUnvan, "", ImzalayanAmirUnvan)
                        Report.SkipLine(1)
                    ElseIf Department.ID = "4" Then 'İskele
                        Report.Print("", "", Department.Name & BolgeBuro & " Amiri")
                        Report.SkipLine(2)
                        Report.Print("", "", "...........................................")
                        Report.SkipLine(2)
                    Else ' diğer şubeler
                        Report.Print(Department.Name & BolgeBuro & " Amir Yardımcısı(a)", "", Department.Name & BolgeBuro & " Amiri")
                        Report.SkipLine(2)
                        Report.Print("...........................................", "", "...........................................")
                        Report.SkipLine(2)
                    End If

                    Report.SetColumns("", "1", "l")

                    Report.PrintFlexible()
                    Report.CenteredLine()
                    Report.FontSize = "--"
                    Report.PrintDocFooter()
                    Report.EndPage()

            Case EventType.PrintStarted

                    If Not TekrarRaporu Then
                        If Not Printed_Already Then
                            BelgeVerildi_InsertTable()
                            Printed_Already = True
                        End If
                    End If
                    '***************************************
                    Show("Report")

        End Select

    End Sub

    Sub VerilenBelge_KayitHazirla(ByVal TekrarRaporuMu As Boolean)
        Try
            Dim SirketAdi As String = ""
            Dim isyeriNo As String = ""
            Dim isyeriSicilNo As String = ""
            Dim YeniSirketmi As Int16
            'Dim GirilecekSiraNo As Int16
            Dim SorguSql = ""

            If Not TekrarRaporuMu Then  ' tekrar raporu degilse yeni kaydi hazirla, tekrar ise zaten hazirdir

                If Input("KayitliYeniIsyeri") <> "Y" Then   ' Sistemde kaydı olan şirket
                    SirketAdi = Input("IsyeriAdi")
                    isyeriNo = CStr(Input("IsyeriNo")).Trim
                    isyeriSicilNo = Rs3("sicilno")
                    YeniSirketmi = 0

                ElseIf Trim(Input("IsyeriNo")) <> "" Then   ' Sistemde kaydı olmayan şirket

                    SirketAdi = Input("IsyeriAdi")
                    isyeriNo = "Yeni"
                    isyeriSicilNo = "Yeni"
                    YeniSirketmi = 1
                End If

                Dim BitisTarihDate As DateTime

                ' 1/3 Ay gecerli belge
                BitisTarihDate = Local.SysDate.AddMonths(Input("HFVerilecekSure"))

                'SorguSql = "select isnull(max(Kod),0) + 1 as MaxNo from Hukuk_CalismaIzni where year(VerilenTarih)=" & SysDate.Year

                'Rs = OpenSQL(SorguSql)

                'If Not IsDBNull(Rs.Rows(0).Item(0)) Then
                '    GirilecekSiraNo = CInt(Rs("MaxNo"))
                'End If

                SecilenKayit.isyeriNo = isyeriNo
                SecilenKayit.FirmAd = SirketAdi
                ' SecilenKayit.Sure = Input("HFVerilecekSure")
                SecilenKayit.VerilisTarihi = Local.SysDate
                'SecilenKayit.BitisTarihi = BitisTarihDate
                'SecilenKayit.SeriNo = UniqueSiraNo ' GirilecekSiraNo '
                SecilenKayit.SicilNo = isyeriSicilNo
                '                SecilenKayit.YeniSirket = YeniSirketmi

            End If


        Catch exp As Exception
            MsgBox("Hata oluştu:" & exp.ToString)
            '   Me.EventLog1.WriteEntry(exp.ToString)
        Finally
            GC.Collect()
        End Try

    End Sub

    Sub BelgeVerildi_InsertTable()
        Sigortali.Yazismalar.IsverenDaireYazismalari.VergiDYazismaKaydet(Remote, SecilenKayit)
    End Sub

    Function KayitVarMi_Kontrol() As Boolean
        Rs = Sigortali.Yazismalar.IsverenDaireYazismalari.VergiDYazismaOku(Remote, Input("Isyeri"), Input("sigortali"))

        If Rs.EOF Then Return False

        Row = Rs.Rows(0)

        SecilenKayit.VerilisTarihi = DMY(Now)
        SecilenKayit.FirmAd = Rs("isyeriadi")
        SecilenKayit.SicilNo = Rs("isyeriadi")
        SecilenKayit.İsverenkimlik = Rs("kimlik")
        SecilenKayit.İsverenSno = Rs("sno")
        SecilenKayit.SicilNo = Rs("isyeriadi")

        Return True

    End Function

End Class
